Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Кафедра ПЗ
КУРСОВА РОБОТА
з курсу «Проблемно-орієнтовані мови програмування»
Варіант 6
Завдання
1. Сформувати з елементів даної матриці, що лежать під головною діагоналлю, кососиметричну матрицю (матриця А кососиметрична, якщо aij=aji для довільних i,j).
2. Обчислити суми елементів рядків, номери яких задаються цілочисельним вектором.
3. З множини М точок на площині, заданих декартовими координатами на площині, сформувати підмножину P≤M, що містить точки, які знаходяться всередині замкненої області D. Область D обмежена лініями (K – змінний коефіцієнт):
4. З множини прямих М, заданих коефіцієнтами рівняння Ax+By+C=0, сформувати множину прямих P≤M, відстань від яких до точки A(xa; ya) не належить заданому інтервалу, і впорядкувати цю множину в порядку зростання відстаней.
5. З множини М точок на площині, сформувати множину точок P≤M, відстань від яких до прямої Ax+By+C=0 належить заданому інтервалу, і впорядкувати цю множину за спаданням відстаней.
6. З множини прямих М, заданих коефіцієнтами рівняння, визначити дві паралельні прямі, між якими найбільша відстань.
7. Визначити довжини ламаних ліній, які починаються в точці A(xa; ya), проходять через одну з точок множини M {(x1; y1), (x2; y2), (x3; y3), ... ,(xn; yn)}. Сформувати множину точок P≤M, що належить ламаним, довжина яких найбільша. Впорядкувати цю множину в порядку спадання довжин ламаних.
8. Обчислити методом прямокутників інтеграл
, a = 0,0; b = 2,0 ... 3,0
9. Обчислити методом січних наближений корінь рівняння:
, αпоч.=0,5; αкінц.=1,5; Δα=0,1; a0=0,1; b0=1,8
Текст програми
Модуль KURS.CPP
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#include "task46.h"
#include "task79.h"
int SelectTask();
void Task1();
void Task2();
void Task3();
void main()
{
int nTask;
do
{
nTask=SelectTask(); // Вибiр номера завдання користувачем
switch(nTask)
{
case 1: Task1(); break; // 1 - викликаємо функцiю для завд.1
case 2: Task2(); break; // 2 - викликаємо функцiю для завд.2
case 3: Task3(); break; // ...
case 4: Task4(); break;
case 5: Task5(); break;
case 6: Task6(); break;
case 7: Task7(); break;
case 8: Task8(); break;
case 9: Task9(); break; // 9 - викликаємо функцiю для завд.9
}
}
while (nTask); // Якщо 0 - завершуємо роботу програми
}
int SelectTask()
{
int task=0;
clrscr();
printf("Nomer zavdannya (1-9, 0-zavershyty): ");
// Читаємо номер завдання з клавiатури...
scanf("%d",&task);
// ...i повертаємо його як результат роботи функцiї
return task;
}
void Task1()
{
int i,j, n, rezhym, a[50][50], b[50][50];
FILE *f;
clrscr();
printf("Rezhym roboty programy [0-zvychajnyj, 1-demonstracijnyj]: ");
// Задаємо режим роботи програми
scanf("%d",&rezhym);
printf("\n");
if (rezhym!=1) // Якщо "Звичайний" - читаємо данi з клавiатури
{
printf ("Poryadok matryci: "); scanf("%d",&n);
printf ("Vvedit elementy matryci (po ryadkah)\n");
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf("%d",&a[i][j]);
}
else // iнакше - читаємо данi з файлу i виводимо їх на екран
{
f=fopen("z1demo.dat","rt");
printf("Poryadok matryci: ");
fscanf(f,"%d",&n); printf("%d\n",n);
printf ("Vvedit elementy matryci (po ryadkah)\n");
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
fscanf(f,"%d",&a[i][j]);
printf("%d ",a[i][j]);
}
printf("\n");
}
fclose(f);
}
// Формуємо кососиметри...